个人笔记 长期更新

#### 创建一个图片
import cv2 # Not actually necessary if you just want to create an image.
import matplotlib.pyplot as plt #jupyter notebook 用cv2 show img有问题
import numpy as np
height=300
width=300
blank_image = np.zeros((height,width,3), np.uint8)
print(blank_image.shape)
#blank_image[:,0:width//2] = (128,128,128) # (B, G, R)
#blank_image[:,width//2:width] = (128,128,128)
white_image = blank_image.copy()
white_image[...]=(255,255,255)
plt.imshow(white_image)
plt.show() gray_image = blank_image.copy()
gray_image[...]=(128,128,128)
plt.imshow(gray_image)
plt.show()
# white_in_center_img = blank_image.copy()
white_in_center_img[100:200,100:200,:]=(128,128,128)
plt.imshow(white_in_center_img)
plt.show()

读取一个图片

import cv2
img = cv2.imread("/nfsserver/test.jpg")
print(img.shape)

输出(640, 480, 3). 顺序为HWC,BGR

opencv里内存里的存储顺序

https://stackoverflow.com/questions/37040787/opencv-in-memory-mat-representation



举个具体的例子,比如8 x 8的彩色图片。像素坐标从(0,0)到(7,7),每个像素有r,g,b三个值。

存储顺序为(0,0,b),(0,0,g),(0,0,r),(0,1,b),(0,1,g),(0,1,r)......(7,7,b),(7,7,g),(7,7,r)

所以第i行,第j列,第c个channel对应的index即为 i x j x 3 + j x 3 + c.

resize

import cv2
import matplotlib.pyplot as plt
import numpy as np
height=3
width=5
blank_image = np.zeros((height,width,3), np.uint8)
blank_image[1:2,3:4,]=(255,0,0)
plt.imshow(blank_image)
plt.show() cv2.imwrite('/home/su/Desktop/test.jpg',blank_image) blank_image = cv2.resize(blank_image, (416, 416), interpolation=cv2.INTER_CUBIC)
cv2.imwrite('/home/su/Desktop/test2.jpg',blank_image)

opencv mat type

在用printf("mat.type")打印的时候打出来的只是一个数字,不好观察具体的类型,可以参见下表

+--------+----+----+----+----+------+------+------+------+

| | C1 | C2 | C3 | C4 | C(5) | C(6) | C(7) | C(8) |

+--------+----+----+----+----+------+------+------+------+

| CV_8U | 0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 |

| CV_8S | 1 | 9 | 17 | 25 | 33 | 41 | 49 | 57 |

| CV_16U | 2 | 10 | 18 | 26 | 34 | 42 | 50 | 58 |

| CV_16S | 3 | 11 | 19 | 27 | 35 | 43 | 51 | 59 |

| CV_32S | 4 | 12 | 20 | 28 | 36 | 44 | 52 | 60 |

| CV_32F | 5 | 13 | 21 | 29 | 37 | 45 | 53 | 61 |

| CV_64F | 6 | 14 | 22 | 30 | 38 | 46 | 54 | 62 |

+--------+----+----+----+----+------+------+------+------+

打印类型的参考代码:

string type2str(int type) {
string r; uchar depth = type & CV_MAT_DEPTH_MASK;
uchar chans = 1 + (type >> CV_CN_SHIFT); switch ( depth ) {
case CV_8U: r = "8U"; break;
case CV_8S: r = "8S"; break;
case CV_16U: r = "16U"; break;
case CV_16S: r = "16S"; break;
case CV_32S: r = "32S"; break;
case CV_32F: r = "32F"; break;
case CV_64F: r = "64F"; break;
default: r = "User"; break;
} r += "C";
r += (chans+'0'); return r;
}

cv:Mat to vector

Mat to array

uchar * arr = image.isContinuous()? image.data: image.clone().data;
uint length = image.total()*image.channels();

Mat to vector

cv::Mat flat = image.reshape(1, image.total()*image.channels());
std::vector<uchar> vec = image.isContinuous()? flat : flat.clone();

opencv代码片段合集的更多相关文章

  1. Javascript 语言精粹 代码片段合集

    Javascript 语言精粹 代码片段合集 标签:Douglas-Crockford Javascript 最佳实践 原文链接 更好的阅读体验 使用一个method 方法定义新方法 Function ...

  2. 常用torch代码片段合集

    PyTorch常用代码段整理合集 本文代码基于 PyTorch 1.0 版本,需要用到以下包 import collections import os import shutil import tqd ...

  3. numpy代码片段合集

    生成shape为(num_examples, num_inputs),符合0-1分布的数据. np.random.normal(0, 1, (num_examples, num_inputs))

  4. 天气类API调用的代码示例合集:全国天气预报、实时空气质量数据查询、PM2.5空气质量指数等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 全国天气预报:数据来自国家气象局,可根据地名.经纬度GPS.IP查 ...

  5. 位置信息类API调用的代码示例合集:中国省市区查询、经纬度地址转换、POI检索等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 中国省市区查询:2017最新中国省市区地址 经纬度地址转换:经纬度 ...

  6. 通讯服务类API调用的代码示例合集:短信服务、手机号归属地查询、电信基站查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 短信服务:通知类和验证码短信,全国三网合一通道,5秒内到达,费用低 ...

  7. 生活常用类API调用的代码示例合集:邮编查询、今日热门新闻查询、区号查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 邮编查询:通过邮编查询地名:通过地名查询邮编 今日热门新闻查询:提 ...

  8. 开发工具类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...

  9. 出行服务类API调用的代码示例合集:长途汽车查询、车型大全、火车票查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 长途汽车查询:全国主要城市的长途汽车时刻查询,汽车站查询 车型大全 ...

随机推荐

  1. nginx: [emerg] unknown directive “ ” in /usr/local/nginx/nginx.conf.conf:xx报错处理

    当我们在修改Nginx的配置文件,然后加载配置文件./nginx -s reload   报错类似的错误, nginx: [emerg] unknown directive “ ” in /usr/l ...

  2. MyCat启动失败 Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: rebirth.a: rebirth.a: unknown error

    在使用Nactive连接MyCat的时候发现怎么连接都不ok,明明已经启动了(实际上启动失败了)! 粗心的我,后来看了下日志,果然,启动失败了 Error: Exception thrown by t ...

  3. FCC---Make a CSS Heartbeat using an Infinite Animation Count----超级好看的心跳,粉色的

    Here's one more continuous animation example with the animation-iteration-count property that uses t ...

  4. DQL---条件查询、单行函数、多行函数、分组函数、数据类型

    一.DQL 1.基本规则: (1)对于日期型数据,做 *,/ 运算不合法,可以进行 +, - 运算.比如给日期加一天或减一个月,结果仍为一个日期.两个日期间只能为减法,返回两个日期相差的天数,两个日期 ...

  5. iOS 常用算法之设计一个算法,验证某字符是否为合法IPV4字符

    浅析 : 一个IPV4字符由3个大于0小于255的数字 以及 3个点构成, 所有我们需要判断小数点数量是否满足条件, 以及小数点隔开的每部分是否满足条件即可. 思路: 1. 校验是否有3个小数点; 2 ...

  6. [b0026] python 归纳 (十一)_线程_threading.Thread

    总结: 默认父线程跑完,子线程并不会马上退出,不像 thread.start_threadXXXX 父线程跑完了,并没有退出,一直在那里 线程启动速度很快,不占多少开销,不到1毫 秒 代码: # -* ...

  7. bayaim_杀神_全民飞机大战

    bayaim_杀神_全民飞机大战 ------------------------ 系统:IOS QQ:7742469490 王者:30 游戏名:神 级别:98 装备:满鸡 + 新战魂+ 歼31 + ...

  8. Python 修饰符@用法

    def funA(desA): print("It's funA") def funB(desB): print(desB( )) print("It's funB&qu ...

  9. MASK-RCNN(1)

    MASK-RCNN是一个多用途的网络,可以用来做目标检测,实例分割或者人体姿态识别.主要结构如下. 简单的说,就是首先用Faster-RCNN获得ROI,再进行ROI Align,然后输出ROI的分类 ...

  10. 第50 课C++对象模型分析——成员函数(上)

    类中的成员函数位于代码段中调用成员函数时对象地址作为参数隐式传递成员函数通过对象地址访问成员变量C++语法规则隐藏了对象地址的传递过程 #include<iostream> #includ ...