IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> OPENCV对图像解码并转制为RGB-NCWH格式 -> 正文阅读

[人工智能]OPENCV对图像解码并转制为RGB-NCWH格式

OpenCV Native 开发环境搭建步骤请参考:

OpenCV Native开发环境搭建_tugouxp的专栏-CSDN博客

YOLOV3网络吃图格式为416*416 NCWH 三通道的RGB格式图,下面的程序可以将一张JPEG图像转换为对应的格式,基于OPENCV

#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
#include <unistd.h>
 
using namespace std;
using namespace cv;
 
int main(int argc, char **argv)
{
	Mat img = imread("output_416x416.jpg");
	
	if(img.empty())
	{
		cout <<"please confirm the name of pic is right!" <<endl;
		return -1;
	}
 
	Mat imgs0, imgs1, imgs2;
	Mat imgv0, imgv1, imgv2;
	Mat result0, result1, result2;
	Mat imgs[3];
	split(img, imgs);
	imgs0 = imgs[0];
	imgs1 = imgs[1];
	imgs2 = imgs[2];
 
	printf("rows %d, cols %d, channel %d, type %d.\n", img.rows, img.cols, img.channels(), img.type());
	imshow("RGB-B", imgs0);
	imshow("RGB-G", imgs1);
	imshow("RGB-R", imgs2);
	printf("rows %d, cols %d, channel %d, type %d.\n", imgs0.rows, imgs0.cols, imgs0.channels(), imgs0.type());
	printf("rows %d, cols %d, channel %d, type %d.\n", imgs1.rows, imgs1.cols, imgs1.channels(), imgs1.type());
	printf("rows %d, cols %d, channel %d, type %d.\n", imgs2.rows, imgs2.cols, imgs2.channels(), imgs2.type());
 
	Mat zero = cv::Mat::zeros(img.rows, img.cols, CV_8UC1);
	imgs[0] = zero;
	imgs[2] = zero;
 
	merge(imgs, 3, result1);
	imshow("result1", result1);
 
	FILE *file = fopen("network_input.bin", "wb+");
	if(file == NULL)
	{
		cout << "fatal error,create file failure" << endl;
		exit(-1);
	}
 
	cv::MatIterator_<uchar> it0 = imgs0.begin<uchar>();
	cv::MatIterator_<uchar> it0_end = imgs0.end<uchar>();
	for (int i = 0; it0 != it0_end; it0 ++, i ++)
	{
		unsigned char data = *it0;
		int count = fwrite(&data, 1, 1, file);
		if(count != 1)
		{
			cout << "write binary failure." << endl;
		}
	}
 
	cv::MatIterator_<uchar> it1 = imgs1.begin<uchar>();
	cv::MatIterator_<uchar> it1_end = imgs1.end<uchar>();
	for (int i = 0; it1 != it1_end; it1 ++, i ++)
	{
		unsigned char data = *it1;
		int count = fwrite(&data, 1, 1, file);
		if(count != 1)
		{
			cout << "write binary failure." << endl;
		}
	}
 
	cv::MatIterator_<uchar> it2 = imgs2.begin<uchar>();
	cv::MatIterator_<uchar> it2_end = imgs2.end<uchar>();
	for (int i = 0; it2 != it2_end; it2 ++, i ++)
	{
		unsigned char data = *it2;
		int count = fwrite(&data, 1, 1, file);
		if(count != 1)
		{
			cout << "write binary failure." << endl;
		}
	}
 
	fsync(fileno(file));
	fflush(file);
	fclose(file);
 
	waitKey(0);
	return 0;
}

加上scale操作

scale 为416*416大小

#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
#include <unistd.h>
 
using namespace std;
using namespace cv;
 
int main(int argc, char **argv)
{
	Mat img = imread("dog.jpg");
	
	if(img.empty())
	{
		cout <<"please confirm the name of pic is right!" <<endl;
		return -1;
	}

	Size dsize = Size(416, 416);
	Mat img2 = Mat(dsize, 16);

	resize(img, img2, dsize);

	//printf("%s line %d, img2.type = %d.\n", __func__, __LINE__, img2.type());
	//printf("%s line %d, img.type  = %d.\n", __func__, __LINE__, img.type());
 
	Mat imgs0, imgs1, imgs2;
	Mat result0, result1, result2;
	Mat imgs[3];
	split(img2, imgs);
	imgs0 = imgs[0];
	imgs1 = imgs[1];
	imgs2 = imgs[2];
 
	imshow("RGB-B", imgs0);
	imshow("RGB-G", imgs1);
	imshow("RGB-R", imgs2);

	printf("rows %d, cols %d, channel %d, type %d.\n", img2.rows, img2.cols, img2.channels(), img2.type());
	printf("rows %d, cols %d, channel %d, type %d.\n", imgs0.rows, imgs0.cols, imgs0.channels(), imgs0.type());
	printf("rows %d, cols %d, channel %d, type %d.\n", imgs1.rows, imgs1.cols, imgs1.channels(), imgs1.type());
	printf("rows %d, cols %d, channel %d, type %d.\n", imgs2.rows, imgs2.cols, imgs2.channels(), imgs2.type());
 
	Mat zero = cv::Mat::zeros(img2.rows, img2.cols, CV_8UC1);
	imgs[0] = zero;
	imgs[2] = zero;
 
	merge(imgs, 3, result1);
	imshow("result1", result1);
 
	FILE *file = fopen("network_input.bin", "wb+");
	if(file == NULL)
	{
		cout << "fatal error,create file failure" << endl;
		exit(-1);
	}
 
	cv::MatIterator_<uchar> it0 = imgs0.begin<uchar>();
	cv::MatIterator_<uchar> it0_end = imgs0.end<uchar>();
	for (int i = 0; it0 != it0_end; it0 ++, i ++)
	{
		unsigned char data = *it0;
		int count = fwrite(&data, 1, 1, file);
		if(count != 1)
		{
			cout << "write binary failure." << endl;
		}
	}
 
	cv::MatIterator_<uchar> it1 = imgs1.begin<uchar>();
	cv::MatIterator_<uchar> it1_end = imgs1.end<uchar>();
	for (int i = 0; it1 != it1_end; it1 ++, i ++)
	{
		unsigned char data = *it1;
		int count = fwrite(&data, 1, 1, file);
		if(count != 1)
		{
			cout << "write binary failure." << endl;
		}
	}
 
	cv::MatIterator_<uchar> it2 = imgs2.begin<uchar>();
	cv::MatIterator_<uchar> it2_end = imgs2.end<uchar>();
	for (int i = 0; it2 != it2_end; it2 ++, i ++)
	{
		unsigned char data = *it2;
		int count = fwrite(&data, 1, 1, file);
		if(count != 1)
		{
			cout << "write binary failure." << endl;
		}
	}
 
	fsync(fileno(file));
	fflush(file);
	fclose(file);
 
	waitKey(0);
	return 0;
}

结束!

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-30 15:37:27  更:2021-11-30 15:38:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 3:47:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码